I create interactive explanations of math and computer science topics at Red Blob Games[1]. I explore topics related to computer game development, as I’ve found that’s a rich source of motivating examples. My favorite topics are related to maps (grids, paths, procedural generation) and simulations (transportation, economics, complex systems, AI).
Why interactive explanations? I find that I learn best when combining the language side of my brain (reading, formulas) with the visual side of my brain (illustrations, interaction). I want to learn not only by reading something or watching something, but by playing with it. I’m mostly focused on small, self-contained articles, but I’m also interested in interactive textbooks.
I try to spend one day a week meeting with people working on games, education, big data, or visualization. If you’re in the Silicon Valley area and want to chat, email me!
Places you can find me:
- @redblobgames[2] on Twitter
- Game-related blog[3]
- Personal blog[4]
- Photography at Flickr[5] (no longer updated after flickr got sold)
- Saved links at Pinboard[6]
I am not at Stanford anymore. I just have my web pages here because I have an alumni account at Stanford. Thank you, Computer Science Department!
For my past lives, read on:
School
I studied programming language theory (computer science) at Stanford University and graduated in 2002. My thesis work[7] was about Obstacl, an object extension to Standard ML. The language supported both object-oriented and functional programming. A key feature was mixins, expressed as functions that transform classes into other classes. For example, if Encrypted is a function on file-like classes, Encrypted(File) and Encrypted(Socket) are both new classes that result from applying the mixin to a base class. The combination of OO and FP allowed both sides to be much simpler than if you had to express all the concepts in only one style.
I also worked on a web proxy server[8] that alters Java applets to make them more safe. Since I have Java applets turned off in my browser, I decided to add some features to this proxy that would be more useful to me: filtering banner advertisements, reporting and blocking cookies, mangling URL redirects, spotting web bugs, removing pop-up windows, and generally reformatting web pages so that I can read them better). Although I originally started this to work on Java applets, I ended up studying HTTP, and I greatly sped up web surfing by adding asynchronous DNS lookup, HTTP pipelining, gzip compression, even when web servers didn’t implement those features. I have more about my school-related projects on my other home page[9].
Hobbies
In the past I worked on games and other software in my free time. I generally like to release the software (including source) for free. While writing games, I research topics that are related to games I’m working on or want to write in the future. I have collected some information about these topics in a web page about programming topics for computer games. I also write tools for games and web pages, and I’ve put up some of my Python libraries[10], including Yapps[11] (yet another python parser system).
In 1990, I wrote a game called Solar Realms Elite (SRE). It was a multiplayer text game that ran on electronic bulletin board systems[12] (BBSes), and the last version (from 1994) is still available for download[13]. You can also download flavors like Animaniacs SRE[14]. (A “flavor” was a theme/skin that let you change the text and colors.) This game spawned a family of somewhat popular “Solar Realms” games[15], including SRE’s sequel, Barren Realms Elite[16] (BRE). Curiously, some unrelated door games and BBS systems supported the DOORFILE.SR[17]
format I wrote for SRE to get information from the BBS software. In 1996, I lost both my SRE source code and my backup copies, due to a hard disk disaster. Since then, several people have asked if I would release the source. Alas, I would but I can’t! (I also can’t produce registration codes anymore; I recommend getting a crack for the game, like this one.) I am encouraging everyone to write a clone of SRE, and at least eight people have been interested in writing SRE clones.
If you’re interested in cloning SRE, please let me know! I’ve collected some of the notes about SRE’s design. One thing that I agonized over was winning: the original design of SRE allowed the first player to win, rather than the best player. This seems to be an accepted dot-com wisdom. The problem is that this sort of game isn’t necessarily fun.
Believe it or not, someone has written a strange sci-fi story that mentions the characters waiting for their SRE turns[18]! And there are other stories about SRE too[19].
I also worked on a multithreaded strategy game called SimBlob, but I never completed this project. I wanted to bring environmental simulation (water, soil, air, fire, and so on) to a strategy game, and explore the strategies that would be possible when the player could build dams, fight erosion, deal with deforestation and forest fires, build canals and reservoirs, and provide irrigation systems for farmers. The source code to SimBlob is available, but it’s not actively being developed.
Work
Most of my work has been writing computer software, but this has touched on a wide range of other areas: scientific equipment, data analysis, visualization, geological exploration, simulation of complex systems, economic modeling, maps, “big data”, trend analysis, artificial intelligence, and web software.